def longest_palindrome_substring(string):
    characters=list(string)
    expanded='#'+'#'.join(characters)+'#'
    n=len(expanded)
    radius=[0]*n
    visited=[ i for i in range(n) ]
    for i in range(1,n):
        top=max(visited[:i])
        j=0
        if i < top:
            j=radius[2*visited.index(top)-i]
        while i-j >= 0 and i+j < n:
            if expanded[i-j] == expanded[i+j]:
                j+=1
            else:
                break
        radius[i]=j-1
        visited[i]=i+radius[i]
    max_radius=max(radius)
    results=set()
    for i in range(radius.count(max_radius)):
        center=radius.index(max_radius)
        results.add(expanded[center-max_radius:center+max_radius+1].replace('#',''))
        radius[center]=-1
    return results
